Autogenerated HTML docs for v1.8.1-rc2-5-g252f9
diff --git a/git-rerere.html b/git-rerere.html index eed8756..5d0dca3 100644 --- a/git-rerere.html +++ b/git-rerere.html
@@ -2,15 +2,25 @@ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.5.2" /> +<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> +<meta name="generator" content="AsciiDoc 8.6.8" /> <title>git-rerere(1)</title> <style type="text/css"> -/* Debug borders */ -p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { -/* - border: 1px solid red; -*/ +/* Shared CSS for AsciiDoc xhtml11 and html5 backends */ + +/* Default font. */ +body { + font-family: Georgia,serif; +} + +/* Title font. */ +h1, h2, h3, h4, h5, h6, +div.title, caption.title, +thead, p.table.header, +#toctitle, +#author, #revnumber, #revdate, #revremark, +#footer { + font-family: Arial,Helvetica,sans-serif; } body { @@ -35,13 +45,8 @@ color: #083194; } -tt { - color: navy; -} - h1, h2, h3, h4, h5, h6 { color: #527bbd; - font-family: sans-serif; margin-top: 1.2em; margin-bottom: 0.5em; line-height: 1.3; @@ -59,9 +64,11 @@ h3 + * { clear: left; } +h5 { + font-size: 1.0em; +} div.sectionbody { - font-family: serif; margin-left: 0; } @@ -77,45 +84,48 @@ ul, ol, li > p { margin-top: 0; } +ul > li { color: #aaa; } +ul > li > * { color: black; } -pre { +.monospaced, code, pre { + font-family: "Courier New", Courier, monospace; + font-size: inherit; + color: navy; padding: 0; margin: 0; } -span#author { + +#author { color: #527bbd; - font-family: sans-serif; font-weight: bold; font-size: 1.1em; } -span#email { +#email { } -span#revnumber, span#revdate, span#revremark { - font-family: sans-serif; +#revnumber, #revdate, #revremark { } -div#footer { - font-family: sans-serif; +#footer { font-size: small; border-top: 2px solid silver; padding-top: 0.5em; margin-top: 4.0em; } -div#footer-text { +#footer-text { float: left; padding-bottom: 0.5em; } -div#footer-badges { +#footer-badges { float: right; padding-bottom: 0.5em; } -div#preamble { +#preamble { margin-top: 1.5em; margin-bottom: 1.5em; } -div.tableblock, div.imageblock, div.exampleblock, div.verseblock, +div.imageblock, div.exampleblock, div.verseblock, div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, div.admonitionblock { margin-top: 1.0em; @@ -135,7 +145,6 @@ /* Block element titles. */ div.title, caption.title { color: #527bbd; - font-family: sans-serif; font-weight: bold; text-align: left; margin-top: 1.0em; @@ -157,13 +166,15 @@ div.sidebarblock > div.content { background: #ffffee; - border: 1px solid silver; + border: 1px solid #dddddd; + border-left: 4px solid #f0f0f0; padding: 0.5em; } div.listingblock > div.content { - border: 1px solid silver; - background: #f4f4f4; + border: 1px solid #dddddd; + border-left: 5px solid #f0f0f0; + background: #f8f8f8; padding: 0.5em; } @@ -171,8 +182,8 @@ padding-left: 1.0em; margin-left: 1.0em; margin-right: 10%; - border-left: 5px solid #dddddd; - color: #777777; + border-left: 5px solid #f0f0f0; + color: #888; } div.quoteblock > div.attribution { @@ -180,8 +191,9 @@ text-align: right; } -div.verseblock > div.content { - white-space: pre; +div.verseblock > pre.content { + font-family: inherit; + font-size: inherit; } div.verseblock > div.attribution { padding-top: 0.75em; @@ -254,35 +266,12 @@ margin-bottom: 0.1em; } -div.tableblock > table { - border: 3px solid #527bbd; -} -thead, p.table.header { - font-family: sans-serif; - font-weight: bold; -} tfoot { font-weight: bold; } td > div.verse { white-space: pre; } -p.table { - margin-top: 0; -} -/* Because the table frame attribute is overriden by CSS in most browsers. */ -div.tableblock > table[frame="void"] { - border-style: none; -} -div.tableblock > table[frame="hsides"] { - border-left-style: none; - border-right-style: none; -} -div.tableblock > table[frame="vsides"] { - border-top-style: none; - border-bottom-style: none; -} - div.hdlist { margin-top: 0.8em; @@ -339,25 +328,32 @@ min-width: 100px; } - -@media print { - div#footer-badges { display: none; } +div.colist td { + padding-right: 0.5em; + padding-bottom: 0.3em; + vertical-align: top; +} +div.colist td img { + margin-top: 0.3em; } -div#toc { +@media print { + #footer-badges { display: none; } +} + +#toc { margin-bottom: 2.5em; } -div#toctitle { +#toctitle { color: #527bbd; - font-family: sans-serif; font-size: 1.1em; font-weight: bold; margin-top: 1.0em; margin-bottom: 0.1em; } -div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { +div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { margin-top: 0; margin-bottom: 0; } @@ -373,69 +369,173 @@ margin-left: 6em; font-size: 0.9em; } -/* Overrides for manpage documents */ -h1 { + +span.aqua { color: aqua; } +span.black { color: black; } +span.blue { color: blue; } +span.fuchsia { color: fuchsia; } +span.gray { color: gray; } +span.green { color: green; } +span.lime { color: lime; } +span.maroon { color: maroon; } +span.navy { color: navy; } +span.olive { color: olive; } +span.purple { color: purple; } +span.red { color: red; } +span.silver { color: silver; } +span.teal { color: teal; } +span.white { color: white; } +span.yellow { color: yellow; } + +span.aqua-background { background: aqua; } +span.black-background { background: black; } +span.blue-background { background: blue; } +span.fuchsia-background { background: fuchsia; } +span.gray-background { background: gray; } +span.green-background { background: green; } +span.lime-background { background: lime; } +span.maroon-background { background: maroon; } +span.navy-background { background: navy; } +span.olive-background { background: olive; } +span.purple-background { background: purple; } +span.red-background { background: red; } +span.silver-background { background: silver; } +span.teal-background { background: teal; } +span.white-background { background: white; } +span.yellow-background { background: yellow; } + +span.big { font-size: 2em; } +span.small { font-size: 0.6em; } + +span.underline { text-decoration: underline; } +span.overline { text-decoration: overline; } +span.line-through { text-decoration: line-through; } + +div.unbreakable { page-break-inside: avoid; } + + +/* + * xhtml11 specific + * + * */ + +div.tableblock { + margin-top: 1.0em; + margin-bottom: 1.5em; +} +div.tableblock > table { + border: 3px solid #527bbd; +} +thead, p.table.header { + font-weight: bold; + color: #527bbd; +} +p.table { + margin-top: 0; +} +/* Because the table frame attribute is overriden by CSS in most browsers. */ +div.tableblock > table[frame="void"] { + border-style: none; +} +div.tableblock > table[frame="hsides"] { + border-left-style: none; + border-right-style: none; +} +div.tableblock > table[frame="vsides"] { + border-top-style: none; + border-bottom-style: none; +} + + +/* + * html5 specific + * + * */ + +table.tableblock { + margin-top: 1.0em; + margin-bottom: 1.5em; +} +thead, p.tableblock.header { + font-weight: bold; + color: #527bbd; +} +p.tableblock { + margin-top: 0; +} +table.tableblock { + border-width: 3px; + border-spacing: 0px; + border-style: solid; + border-color: #527bbd; + border-collapse: collapse; +} +th.tableblock, td.tableblock { + border-width: 1px; + padding: 4px; + border-style: solid; + border-color: #527bbd; +} + +table.tableblock.frame-topbot { + border-left-style: hidden; + border-right-style: hidden; +} +table.tableblock.frame-sides { + border-top-style: hidden; + border-bottom-style: hidden; +} +table.tableblock.frame-none { + border-style: hidden; +} + +th.tableblock.halign-left, td.tableblock.halign-left { + text-align: left; +} +th.tableblock.halign-center, td.tableblock.halign-center { + text-align: center; +} +th.tableblock.halign-right, td.tableblock.halign-right { + text-align: right; +} + +th.tableblock.valign-top, td.tableblock.valign-top { + vertical-align: top; +} +th.tableblock.valign-middle, td.tableblock.valign-middle { + vertical-align: middle; +} +th.tableblock.valign-bottom, td.tableblock.valign-bottom { + vertical-align: bottom; +} + + +/* + * manpage specific + * + * */ + +body.manpage h1 { padding-top: 0.5em; padding-bottom: 0.5em; border-top: 2px solid silver; border-bottom: 2px solid silver; } -h2 { +body.manpage h2 { border-style: none; } -div.sectionbody { - margin-left: 5%; +body.manpage div.sectionbody { + margin-left: 3em; } @media print { - div#toc { display: none; } + body.manpage div#toc { display: none; } } -/* Workarounds for IE6's broken and incomplete CSS2. */ -div.sidebar-content { - background: #ffffee; - border: 1px solid silver; - padding: 0.5em; -} -div.sidebar-title, div.image-title { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - margin-top: 0.0em; - margin-bottom: 0.5em; -} - -div.listingblock div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock-attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock-content { - white-space: pre; -} -div.verseblock-attribution { - padding-top: 0.75em; - text-align: left; -} - -div.exampleblock-content { - border-left: 3px solid #dddddd; - padding-left: 0.5em; -} - -/* IE6 sets dynamically generated links as visited. */ -div#toc a:visited { color: blue; } </style> <script type="text/javascript"> /*<+'])'); + var re = new RegExp('[hH]([1-'+(toclevels+1)+'])'); // Function that scans the DOM tree for header elements (the DOM2 // nodeIterator API would be a better technique but not supported by all // browsers). @@ -497,6 +597,25 @@ } var toc = document.getElementById("toc"); + if (!toc) { + return; + } + + // Delete existing TOC entries in case we're reloading the TOC. + var tocEntriesToRemove = []; + var i; + for (i = 0; i < toc.childNodes.length; i++) { + var entry = toc.childNodes[i]; + if (entry.nodeName.toLowerCase() == 'div' + && entry.getAttribute("class") + && entry.getAttribute("class").match(/^toclevel/)) + tocEntriesToRemove.push(entry); + } + for (i = 0; i < tocEntriesToRemove.length; i++) { + toc.removeChild(tocEntriesToRemove[i]); + } + + // Rebuild TOC entries. var entries = tocEntries(document.getElementById("content"), toclevels); for (var i = 0; i < entries.length; ++i) { var entry = entries[i]; @@ -524,24 +643,44 @@ */ footnotes: function () { - var cont = document.getElementById("content"); + // Delete existing footnote entries in case we're reloading the footnodes. + var i; var noteholder = document.getElementById("footnotes"); + if (!noteholder) { + return; + } + var entriesToRemove = []; + for (i = 0; i < noteholder.childNodes.length; i++) { + var entry = noteholder.childNodes[i]; + if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote") + entriesToRemove.push(entry); + } + for (i = 0; i < entriesToRemove.length; i++) { + noteholder.removeChild(entriesToRemove[i]); + } + + // Rebuild footnote entries. + var cont = document.getElementById("content"); var spans = cont.getElementsByTagName("span"); var refs = {}; var n = 0; for (i=0; i<spans.length; i++) { if (spans[i].className == "footnote") { n++; - // Use [\s\S] in place of . so multi-line matches work. - // Because JavaScript has no s (dotall) regex flag. - note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; + var note = spans[i].getAttribute("data-note"); + if (!note) { + // Use [\s\S] in place of . so multi-line matches work. + // Because JavaScript has no s (dotall) regex flag. + note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; + spans[i].innerHTML = + "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + + "' title='View footnote' class='footnote'>" + n + "</a>]"; + spans[i].setAttribute("data-note", note); + } noteholder.innerHTML += "<div class='footnote' id='_footnote_" + n + "'>" + "<a href='#_footnoteref_" + n + "' title='Return to text'>" + n + "</a>. " + note + "</div>"; - spans[i].innerHTML = - "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + - "' title='View footnote' class='footnote'>" + n + "</a>]"; var id =spans[i].getAttribute("id"); if (id != null) refs["#"+id] = n; } @@ -561,13 +700,36 @@ } } } +}, + +install: function(toclevels) { + var timerId; + + function reinstall() { + asciidoc.footnotes(); + if (toclevels) { + asciidoc.toc(toclevels); + } + } + + function reinstallAndRemoveTimer() { + clearInterval(timerId); + reinstall(); + } + + timerId = setInterval(reinstall, 500); + if (document.addEventListener) + document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false); + else + window.onload = reinstallAndRemoveTimer; } } +asciidoc.install(); /*]]>*/ </script> </head> -<body> +<body class="manpage"> <div id="header"> <h1> git-rerere(1) Manual Page @@ -580,13 +742,16 @@ </div> </div> <div id="content"> +<div class="sect1"> <h2 id="_synopsis">SYNOPSIS</h2> <div class="sectionbody"> <div class="verseblock"> -<div class="verseblock-content"><em>git rerere</em> [<em>clear</em>|<em>forget</em> <pathspec>|<em>diff</em>|<em>remaining</em>|<em>status</em>|<em>gc</em>]</div> -<div class="verseblock-attribution"> +<pre class="content"><em>git rerere</em> [<em>clear</em>|<em>forget</em> <pathspec>|<em>diff</em>|<em>remaining</em>|<em>status</em>|<em>gc</em>]</pre> +<div class="attribution"> </div></div> </div> +</div> +<div class="sect1"> <h2 id="_description">DESCRIPTION</h2> <div class="sectionbody"> <div class="paragraph"><p>In a workflow employing relatively long lived topic branches, @@ -607,6 +772,8 @@ </tr></table> </div> </div> +</div> +<div class="sect1"> <h2 id="_commands">COMMANDS</h2> <div class="sectionbody"> <div class="paragraph"><p>Normally, <em>git rerere</em> is run without arguments or user-intervention. @@ -670,12 +837,14 @@ occurred a long time ago. By default, unresolved conflicts older than 15 days and resolved conflicts older than 60 days are pruned. These defaults are controlled via the -<tt>gc.rerereunresolved</tt> and <tt>gc.rerereresolved</tt> configuration +<code>gc.rerereunresolved</code> and <code>gc.rerereresolved</code> configuration variables respectively. </p> </dd> </dl></div> </div> +</div> +<div class="sect1"> <h2 id="_discussion">DISCUSSION</h2> <div class="sectionbody"> <div class="paragraph"><p>When your topic branch modifies an overlapping area that your @@ -684,35 +853,35 @@ even before your topic branch is ready to be pushed upstream:</p></div> <div class="listingblock"> <div class="content"> -<pre><tt> o---*---o topic +<pre><code> o---*---o topic / - o---o---o---*---o---o master</tt></pre> + o---o---o---*---o---o master</code></pre> </div></div> <div class="paragraph"><p>For such a test, you need to merge master and topic somehow. One way to do it is to pull master into the topic branch:</p></div> <div class="listingblock"> <div class="content"> -<pre><tt> $ git checkout topic +<pre><code> $ git checkout topic $ git merge master o---*---o---+ topic / / - o---o---o---*---o---o master</tt></pre> + o---o---o---*---o---o master</code></pre> </div></div> -<div class="paragraph"><p>The commits marked with <tt>*</tt> touch the same area in the same +<div class="paragraph"><p>The commits marked with <code>*</code> touch the same area in the same file; you need to resolve the conflicts when creating the commit -marked with <tt>+</tt>. Then you can test the result to make sure your +marked with <code>+</code>. Then you can test the result to make sure your work-in-progress still works with what is in the latest master.</p></div> <div class="paragraph"><p>After this test merge, there are two ways to continue your work on the topic. The easiest is to build on top of the test merge -commit <tt>+</tt>, and when your work in the topic branch is finally +commit <code>+</code>, and when your work in the topic branch is finally ready, pull the topic branch into master, and/or ask the upstream to pull from you. By that time, however, the master or -the upstream might have been advanced since the test merge <tt>+</tt>, +the upstream might have been advanced since the test merge <code>+</code>, in which case the final commit graph would look like this:</p></div> <div class="listingblock"> <div class="content"> -<pre><tt> $ git checkout topic +<pre><code> $ git checkout topic $ git merge master $ ... work on both topic and master branches $ git checkout master @@ -720,7 +889,7 @@ o---*---o---+---o---o topic / / \ - o---o---o---*---o---o---o---o---+ master</tt></pre> + o---o---o---*---o---o---o---o---+ master</code></pre> </div></div> <div class="paragraph"><p>When your topic branch is long-lived, however, your topic branch would end up having many such "Merge from master" commits on it, @@ -733,7 +902,7 @@ top of the tip before the test merge:</p></div> <div class="listingblock"> <div class="content"> -<pre><tt> $ git checkout topic +<pre><code> $ git checkout topic $ git merge master $ git reset --hard HEAD^ ;# rewind the test merge $ ... work on both topic and master branches @@ -742,19 +911,19 @@ o---*---o-------o---o topic / \ - o---o---o---*---o---o---o---o---+ master</tt></pre> + o---o---o---*---o---o---o---o---+ master</code></pre> </div></div> <div class="paragraph"><p>This would leave only one merge commit when your topic branch is finally ready and merged into the master branch. This merge would require you to resolve the conflict, introduced by the -commits marked with <tt>*</tt>. However, this conflict is often the +commits marked with <code>*</code>. However, this conflict is often the same conflict you resolved when you created the test merge you blew away. <em>git rerere</em> helps you resolve this final conflicted merge using the information from your earlier hand resolve.</p></div> <div class="paragraph"><p>Running the <em>git rerere</em> command immediately after a conflicted automerge records the conflicted working tree files, with the -usual conflict markers <tt><<<<<<<</tt>, <tt>=======</tt>, and <tt>>>>>>>></tt> in +usual conflict markers <code><<<<<<<</code>, <code>=======</code>, and <code>>>>>>>></code> in them. Later, after you are done resolving the conflicts, running <em>git rerere</em> again will record the resolved state of these files. Suppose you did this when you created the test merge of @@ -766,8 +935,8 @@ If this three-way merge resolves cleanly, the result is written out to your working tree file, so you do not have to manually resolve it. Note that <em>git rerere</em> leaves the index file alone, -so you still need to do the final sanity checks with <tt>git diff</tt> -(or <tt>git diff -c</tt>) and <em>git add</em> when you are satisfied.</p></div> +so you still need to do the final sanity checks with <code>git diff</code> +(or <code>git diff -c</code>) and <em>git add</em> when you are satisfied.</p></div> <div class="paragraph"><p>As a convenience measure, <em>git merge</em> automatically invokes <em>git rerere</em> upon exiting with a failed automerge and <em>git rerere</em> records the hand resolve when it is a new conflict, or reuses the earlier hand @@ -784,7 +953,7 @@ development on the topic branch:</p></div> <div class="listingblock"> <div class="content"> -<pre><tt> o---*---o-------o---o topic +<pre><code> o---*---o-------o---o topic / o---o---o---*---o---o---o---o master @@ -792,20 +961,23 @@ o---*---o-------o---o topic / - o---o---o---*---o---o---o---o master</tt></pre> + o---o---o---*---o---o---o---o master</code></pre> </div></div> -<div class="paragraph"><p>you could run <tt>git rebase master topic</tt>, to bring yourself +<div class="paragraph"><p>you could run <code>git rebase master topic</code>, to bring yourself up-to-date before your topic is ready to be sent upstream. This would result in falling back to a three-way merge, and it would conflict the same way as the test merge you resolved earlier. <em>git rerere</em> will be run by <em>git rebase</em> to help you resolve this conflict.</p></div> </div> +</div> +<div class="sect1"> <h2 id="_git">GIT</h2> <div class="sectionbody"> <div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div> </div> </div> +</div> <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text">